package com.cy.pj.sys.service.impl;

import com.cy.pj.sys.dao.SysMenuDao;
import com.cy.pj.sys.pojo.SysMenu;
import com.cy.pj.sys.service.SysMenuService;
import cy.pj.common.pojo.Node;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class SysMenuServiceImpl implements SysMenuService {
    @Autowired
    private SysMenuDao sysMenuDao;
    /***/
    @Cacheable(cacheNames = "sysMenu")  //缓存应用切入点方法（AOP）
    @Override
    public List<SysMenu> findMenus() {
        //从缓存取，缓存中没有则访问数据库，更新缓存
        return sysMenuDao.selectMenus();
    }

    @CacheEvict(value="sysMenu",allEntries = true)
    @Override
    public int saveMenu(SysMenu entity) {
        return sysMenuDao.insertMenu(entity);
    }

    /**
     * cacheevict注解是一个清理缓存的切入点方法，这里的value属性值表示要清除的缓存
     * allentrys表示清除cacheable注解下的所有缓存数据
     * */
    @CacheEvict(value="sysMenu",allEntries = true)   //清理缓存的切入点方法
    @Override
    public int updateMenu(SysMenu entity) {
        return sysMenuDao.updateMenu(entity);
    }

    @Override
    public List<Node> findMenuTreeNodes() {
        return sysMenuDao.selectMenuTreeNodes();
    }
}
